import { observable, action, computed, runInAction } from "mobx";
import md5 from "md5";
// import ipcRender from "@/ipcRender";
// import { useStorage } from "@/hooks/useStorage";
// import {
//   userLoginApi,
//   getUserQrCodeApi,
//   checkUserQrCodeApi,
//   getUserInfoApi,
//   setUserInfoApi,
//   changePasswordApi,
// } from "@/api/user";
// import { UserType } from "@/constant";
import { friendStore, groupStore, requestStore, tagGroupStore } from ".";
// import deviceManager from "@/net/DeviceManager";

interface ILoginForm {
  telephone: string;
  password: string;
  serial: string;
  loginIp: string | null;
}

// const { getItem, setItem, removeItem } = useStorage();

export class UserStore {
  //是否登录
  // @observable loginStatus: boolean = getItem("loginStatus") || false;
  // // token
  // @observable token: string = getItem("token") || "";
  // //登录信息
  // @observable loginInfo: any = getItem("loginInfo") || {};
  // //用户信息
  // @observable userInfo: any = getItem("userInfo") || {};

  @observable userIp: string = "";

  //是否是客服
  @computed
  get isService() {
    return false;
    // return this.userInfo.userType == UserType.Enterprise;
  }

  @computed
  get officialAccountUserId() {
    return 1;
    // return this.loginInfo.officialAccountUserId;
  }

  // @computed
  // get userId() {
  //   return this.userInfo.userId;
  // }

  // @computed
  // get userType() {
  //   return this.userInfo.userType;
  // }

  // @action
  // isMy(userId: string) {
  //   return parseFloat(userId) == this.userId;
  // }

  @action
  login(loginForm: ILoginForm) {
    return new Promise((resolve, reject) => {
      const loginData = {
        areaCode: "86",
        telephone: md5(loginForm.telephone),
        password: md5(loginForm.password),
        serial: md5(loginForm.serial),
        loginIp: loginForm.loginIp,
        appBrand: 'PC-Windows-1212'
        // appBrand: ipcRender.getCurrectDeviceSource(),
      };
      debugger
      // userLoginApi(loginData)
      //   .then((res) => {
      //     this.setStorageValue("loginStatus", true);
      //     this.setStorageValue("token", res.data.access_token);
      //     this.setStorageValue("loginInfo", res.data);

      //     resolve(res);
      //   })
      //   .catch((err) => {
      //     reject(err);
      //   });
    });
  }

  // //修改密码
  // @action changePassword = (params: any) => {
  //   const data = {
  //     telephone: md5(params.telephone),
  //     oldPassword: md5(params.oldPassword),
  //     newPassword: md5(params.newPassword),
  //   };
  //   return new Promise((resolve, reject) => {
  //     changePasswordApi(data)
  //       .then((res) => {
  //         resolve(res);
  //       })
  //       .catch((err) => {
  //         reject(err);
  //       });
  //   });
  // };

  // //请求二维码
  // @action
  // getQRCodeUrl = () => {
  //   return getUserQrCodeApi();
  // };

  // //检测登录状态
  // @action
  // checkQRCodeStatus = (key, serial: string) => {
  //   return new Promise((resolve, reject) => {
  //     checkUserQrCodeApi(key, { serial: md5(serial) })
  //       .then((res) => {
  //         if (res.resultMsg == "ok") {
  //           this.setStorageValue("loginStatus", true);
  //           this.setStorageValue("token", res.data.access_token);
  //           this.setStorageValue("loginInfo", res.data);
  //           resolve(res);
  //         } else if (res.resultMsg == "unavaliable") {
  //           reject();
  //         } else if (res.resultCode == 0) {
  //           reject();
  //         }
  //       })
  //       .catch((err) => {
  //         reject(err);
  //       });
  //   });
  // };

  // @action
  // setStorageValue(field, value) {
  //   this[field] = value;
  //   setItem(field, value);
  // }

  // @action
  // removeStorageValue(field, value) {
  //   this[field] = value;
  //   removeItem(field);
  // }

  // //获取用户信息
  // @action
  // getUserInfo() {
  //   console.log("有调用吗？")
  //   return new Promise((resolve, reject) => {
  //     const userId = this.loginInfo.userId;
  //     getUserInfoApi({ userId })
  //       .then((res) => {
  //         runInAction(() => {
  //           this.setStorageValue("userInfo", res.data);
  //         });
  //         resolve(res);
  //       })
  //       .catch((err) => {
  //         reject(err);
  //       });
  //   });
  // }

  // @action
  // async logout() {
  //   await this.resetStore();
  // }

  // @action updateUserInfo(field, value) {
  //   this.userInfo[field] = value;
  // }

  // //更新呀用户信息
  // @action changeUserInfo = async (params) => {
  //   try {
  //     await setUserInfoApi(params);
  //     Object.keys(params).forEach((key) => {
  //       this.updateUserInfo(key, params[key]);
  //     });
  //     //通知其他端，该用户已修改个人信息
  //     deviceManager.sendUpdateSelfInfoMsg();
  //   } catch (err) {
  //     console.error(err);
  //   }
  // };

  // //清空 store信息
  // @action resetStore() {
  //   return new Promise((resolve) => {
  //     this.removeStorageValue("loginStatus", false);
  //     this.removeStorageValue("token", "");
  //     this.removeStorageValue("loginInfo", {});
  //     this.removeStorageValue("userInfo", {});
  //     friendStore.resetStore();
  //     groupStore.resetStore();
  //     requestStore.resetStore();
  //     tagGroupStore.resetStore();
  //     resolve(true);
  //   });
  // }
}

export default new UserStore();
